#pragma once

#ifndef _ARDUINO_H_
#define _ARDUINO_H_

#include <vector>
#include "abstract_pin.h"
#include "serial.h"

namespace arduino {

namespace constant {
	const unsigned int HIGH = 1;
	const unsigned int LOW = 0;
} // namespace constant

class abstract_pin;

class board
{
	typedef std::vector<abstract_pin*> pin_collection_type;

	pin_collection_type pins_;
	serial* ser_;

public:
	board(serial* port) : ser_(port) {}
	void register_pin(abstract_pin* pin);
	abstract_pin* pin(int pin_number);
	void setup();
	DWORD send(void* msg, DWORD len);
};

} // namespace arduino

#endif
